package com.xidian.zhiancloud.controller.equipFacility.defendManager;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xidian.zhiancloud.controller.base.BaseController;
import com.xidian.zhiancloud.dto.ResultDTO;
import com.xidian.zhiancloud.enums.GeneralResponseEnums;
import com.xidian.zhiancloud.model.DefendRegister;
import com.xidian.zhiancloud.qo.equipFacility.DefendPlanExecuteQO;
import com.xidian.zhiancloud.qo.equipFacility.DefendPlanMakeQO;
import com.xidian.zhiancloud.qo.equipFacility.DefendPlanRegisterQO;
import com.xidian.zhiancloud.service.equipFacility.DefendPlanExecService;
import com.xidian.zhiancloud.vo.equipFacility.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 维护计划执行
 *
 * @Author: Summerless
 * @Date: 2021/4/3 21:00
 */
@RestController
@RequestMapping("/DefendPlanExec")
public class DefendPlanExecController extends BaseController {

    @Autowired
    private DefendPlanExecService defendPlanExecService;

    /**
     * 维护计划执行--列表查询
     * @param defendPlanMakeQO
     * @return
     */
    @GetMapping("/getListByQO")
    public ResultDTO<IPage<DefendPlanMakeVO>> getListByQO(DefendPlanMakeQO defendPlanMakeQO){

        defendPlanMakeQO.setCompanyId(getSessionUserCompanyId());
        return ResultDTO.successOf(defendPlanExecService.getListByQO(defendPlanMakeQO,getSessionUserid()), GeneralResponseEnums.SUCCESS);
    }

    /**
     * 维护计划执行---执行
     * @param defendPlanExecuteQO 维护计划id  设备设施查询参数
     * @return
     */
    @GetMapping("/execute")
    public ResultDTO<IPage<DefendObjectVO>> execute(DefendPlanExecuteQO defendPlanExecuteQO){
        return ResultDTO.successOf(defendPlanExecService.execute(getSessionUserid(),defendPlanExecuteQO), GeneralResponseEnums.SUCCESS);
    }

    /**
     * 维护计划执行---执行---维护（添加到维护登记）
     * @param defendPlanRegisterQO  设备维护信息
     * @return
     */
    @PostMapping("/defend")
    public ResultDTO<Boolean> defend(DefendPlanRegisterQO defendPlanRegisterQO){
        defendPlanRegisterQO.setCompanyId(getSessionUserCompanyId());
        return ResultDTO.successOf(defendPlanExecService.defend(getSessionUserid(),defendPlanRegisterQO),GeneralResponseEnums.SUCCESS);
    }

    /**
     * 检修项检修之后【编辑】可修改
     * @param defendRegister
     * @return
     */
    @PostMapping("/update")
    public ResultDTO<Boolean> update(DefendRegister defendRegister){
        defendRegister.setCompanyId(null);
        defendRegister.setCreator(null);
        defendRegister.setDefendTypeId(null);
        defendRegister.setProtectStep(null);
        defendRegister.setDefendTime(null);
        defendRegister.setStatus(null);
        defendRegister.setCreateTime(null);
        defendRegister.setDefenderIds(null);
        defendRegister.setDeviceId(null);
        return ResultDTO.successOf(defendPlanExecService.updateById(defendRegister),GeneralResponseEnums.SUCCESS);
    }

    /**
     * 查看设备信息和维护项信息
     * @param planId
     * @param eqFacMngId
     * @return
     */
    @GetMapping("/getEqFacMngMsg")
    public ResultDTO<DefendPlanEqFacMngVO> getEqFacMngMsg(Long planId,Long eqFacMngId){
        return ResultDTO.successOf(defendPlanExecService.getEqFacMngMsg(planId,eqFacMngId),GeneralResponseEnums.SUCCESS);
    }

    /**
     * 执行---维护之后----查看
     * @param defendPlanRegisterQO  维护计划id   设备设施id
     * @return
     */
    @GetMapping("/lookOver")
    public ResultDTO<EqFacAndRegisterVO> lookOver(DefendPlanRegisterQO defendPlanRegisterQO){
        return ResultDTO.successOf(defendPlanExecService.lookOver(defendPlanRegisterQO),GeneralResponseEnums.SUCCESS);
    }

    /**
     * 提交
     * @param planId 维护计划id
     * @return
     */
    @PostMapping("/submit")
    public ResultDTO<Boolean> submit(Long planId){
        return ResultDTO.successOf(defendPlanExecService.submit(planId,getSessionUserid()),GeneralResponseEnums.SUCCESS);
    }

    /**
     * 执行之后查看维护项维护登记信息
     * @param defendPlanRegisterQO
     * @return
     */
    @GetMapping("/getRegister")
    public ResultDTO<DefendRegister> getRegister(DefendPlanRegisterQO defendPlanRegisterQO){
        return ResultDTO.successOf(defendPlanExecService.getRegister(defendPlanRegisterQO),GeneralResponseEnums.SUCCESS);
    }

}
